package com.sg.service.base.framework;

import com.sg.dto.base.framework.req.*;
import com.sg.entity.Dept;

import java.util.List;

/**
 * @author ：
 * @version 1.0
 * @date ：
 */
public interface MDeptService {
    /**
     * 1-3-09新增部门
     */
    String addDept(Dept dept);

    /**
     * 1-3-09修改部门
     */
    boolean updateDept(Dept dept);

    /**
     * 1-3-09删除部门
     */
    boolean deleteDept(String deptId);

    /**
     * 1-3-09查询部门列表
     */
    List<Dept> queryDeptList(QueryDeptListReq reqDto);

    /**
     * 1-3-09查询部门详情
     */
    Dept queryDeptDetail(QueryDeptDetailReq reqDto);

    /**
     * 1-3-09批量查询部门列表
     */
    List<Dept> batchQueryDeptList(BatchQueryDeptListReq reqDto);

    /**
     * 1-3-09批量查询部门列表
     */
    List<Dept> batchQueryDept(BatchQueryDeptReq reqDto);

    /**
     * M-构造部门树状结构特殊方法
     */
    List<Dept> querySpecMethodTreeList(QuerySpecMethodTreeListReq reqDto);

    /**
     * 1-3-09模糊查询部门列表
     */
    List<Dept> vagueQueryDept(VagueQueryDeptReq reqDto);

    /**
     * 1-3-09查询一级部门列表ByIds（暂没有使用，以后预留）
     */
    List<Dept> batchQueryOneLevelDeptListByIds(BatchQueryOneLevelDeptListByIdsReq reqDto);

    /**
     * 1-3-09查询部门树状结构列表
     */
    List<Dept> queryDeptTreeList(QueryDeptTreeListReq reqDto);

    /**
     * 1-3-09批量查询下级直属部门
     */
    List<Dept> batchQuerySubordinateDirectlyDept(BatchQuerySubordinateDirectlyDeptReq reqDto);

    /**
     * M1去重过滤已存在的部门
     */
    List<Dept> unrepeatedFilterExistingDept(UnrepeatedFilterExistingDeptReq reqDto);

    /**
     * 1-3-09批量改部门主管
     */
    boolean batchUpdateDeptDirector(List<Dept> dept);

    /**
     * 1-3-09批量改部门
     */
    boolean batchUpdateDept(List<Dept> dept);

    /**
     * 1-3-1查询下级直属部门详情
     */
    Dept querySubordinateDirectlyDeptDetail(QuerySubordinateDirectlyDeptDetailReq reqDto);

    /**
     * M1查询部门测试列表
     */
    List<Dept> queryDeptTestDataList(QueryDeptTestDataListReq reqDto);

    /**
     * M1批量删部门测试
     */
    boolean batchDeleteDeptTestData(List<String> reqDto);

    /**
     * 1-3-09批量查询部门列表ByCode
     */
    List<Dept> batchQueryDeptByCode(BatchQueryDeptByCodeReq reqDto);

    /**
     * 1-3-09查询组织下部门列表
     */
    List<Dept> queryOrgBelowDeptList(QueryOrgBelowDeptListReq reqDto);

    /**
     * 1-3-09修改部门清除值
     */
    boolean updateDeptClear(Dept dept);

    /**
     * 1-3-09批量查询部门By主键ID
     */
    List<Dept> batchQueryDeptByEntiyId(BatchQueryDeptByEntiyIdReq reqDto);
//
}

